"""
冒泡排序
"""


def bubble_sort(arr):
    # 检查列表是否为空
    if len(arr) == 0:
        raise TypeError("list is None")

    # 检查输入是否为列表
    if not isinstance(arr, list):
        raise TypeError("type error1")

    # 检查是否包含布尔值
    if any(isinstance(x, bool) for x in arr):
        raise TypeError("type error3: 列表中包含布尔值")

    # 检查是否包含非数字类型
    if not all(isinstance(x, (int, float)) for x in arr):
        raise TypeError("type error2: 列表中包含非数字类型")

    n = len(arr)
    # 遍历所有元素
    for i in range(n):
        # 最后i个元素已经排好序，无需再比较
        for j in range(0, n - i - 1):
            # 如果当前元素大于后一个元素，则交换
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
    return arr
